const storageUtil = {
    /**
     * 设置带有过期时间的键值对到 localStorage
     * @param {string} key - 存储的键
     * @param {*} value - 存储的值
     * @param {number} expireTime - 过期时间（毫秒）
     */
    setItem(key, value, expireTime) {
        const now = Date.now(); // 当前时间戳
        const expires = now + expireTime; // 计算过期时间
        const item = {
            value,
            expires // 记录过期时间
        };
        localStorage.setItem(key, JSON.stringify(item)); // 存入 localStorage
    },

    /**
     * 获取带有过期时间的键值对
     * @param {string} key - 存储的键
     * @returns {*} 存储的值（如果未过期），否则返回 null
     */
    getItem(key) {
        const itemStr = localStorage.getItem(key);
        if (!itemStr) return null; // key 不存在时返回 null

        const item = JSON.parse(itemStr);
        if (Date.now() > item.expires) { // 判断是否过期
            localStorage.removeItem(key); // 过期则删除
            return null;
        }
        return item.value;
    },

    /**
     * 移除指定 key 的数据
     * @param {string} key - 存储的键
     */
    removeItem(key) {
        localStorage.removeItem(key);
    },

    /**
     * 清空 localStorage
     */
    clear() {
        localStorage.clear();
    }
};

export default storageUtil;
